﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace WiccanRede
{
   // [ComVisible(true)]
    public interface ISceneObject
    {
        string GetName();
        string GetModelName();
        string GetModelShaderName();

        float GetScaleX();
        float GetScaleY();
        float GetScaleZ();

        float GetRotationX();
        float GetRotationY();
        float GetRotationZ();

        float GetX();
        float GetY();
        float GetZ();

        void SetPosition(float x, float y, float z);
        void SetScale(float sx, float sy, float sz);
        void SetRotation(float rx, float ry, float rz);

        void SetName(String name);
        void SetModelName(String modelName);
        void SetModelShaderName(String shaderName);

        void SetNextItem(SceneObject next);
        ISceneObject GetNextObject();
    }

    //[ComVisible(true)]
    public interface ISceneShader
    {
        string GetShaderName();
        string GetShaderFilename();

        void SetShaderName(String shaderName);
        void SetShaderFilename(String filename);
    }

   //[ComVisible(true)]
    public interface ISceneBuilder
    {
        String GetMapTexturePath();
        String GetMapNormalTexturePath();
        float[,] LoadMap();
        void LoadScene(string path);
        void SaveScene(string path);

        ISceneObject GetCurrentObject();
        ISceneShader GetCurrentShader();

        int GetObjectCount();
        int GetShadersCount();

        bool NextObjectRow();
        bool NextShader();

        void SetNextObjectRow(ISceneObject sceneObject);
        void SetNextShader(SceneShader sceneShader);

        void ResetObjectRow();
        void ResetShaderPosition();

        void ClearObjects();
        void ClearShaders();

    }
}
